<?php
	$urlCurso			=	constant('PARAMETRO_1');
	$cursoVisualizado	=	new Curso(null, $urlCurso);
	$idUsuario	=	$this->getUsuario() == null ? null : $this->getUsuario()->getIdUsuario();
	$idCurso = $cursoVisualizado->getIdCurso();
	
	if ($idUsuario != NULL && defined('PARAMETRO_2')) {
		$tipoUsuario = $this->getUsuario()->getTipoCadastro();
		$permissaoAvisos = new Permissao($idCurso, 'avisos', $tipoUsuario);
		$moduloVisualizado		=	null;
		if(defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'alterarPermissoes'){
			if($permissaoAvisos->checkPermissao('Alterar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
				require('gerencia/permissoes.php');
				exit(0);
			}else{
				redireciona(array('curso', $urlCurso, constant('PARAMETRO_2'), constant('PARAMETRO_3')));
			}
			
		}
		$localAcao	=	constant('PARAMETRO_2');
		if ($localAcao == 'comunicacao' && defined('PARAMETRO_3') && constant('PARAMETRO_3') == 'avisos') {
			$localAcao	=	constant('PARAMETRO_3');
			$objetivoPagina	=	defined('PARAMETRO_4') ? constant('PARAMETRO_4') : '';
		}
		else {
			if ($localAcao == 'modulo') {
				$idModulo			=	defined('PARAMETRO_3') ? constant('PARAMETRO_3') : null;
				$moduloVisualizado	=	new Modulo($idModulo);
				if ($moduloVisualizado->getIdModulo() == null) {
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo'));
				}
				if (defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'avisos')
					$objetivoPagina	=	defined('PARAMETRO_5') ? constant('PARAMETRO_5') : 'listar';
				else 
					redireciona(array('404'));
			}
			else {
				redireciona(array('404'));
			}
		}
		
		if ($cursoVisualizado->permissaoAcesso($idUsuario, 'avisos')) {
			if ($_POST && $idUsuario != null) {
				if (isset($_POST['btnInserir'])) {
					if ($localAcao == 'avisos')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos', 'inserir'));
					if ($localAcao == 'modulo')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'avisos', 'inserir'));
				}
				
				if (isset($_POST['btnCancelar'])) {
					if ($localAcao == 'avisos')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos'));
					if ($localAcao == 'modulo')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'avisos'));
				}
				
				if (isset($_POST['btnExcluir'])) {
					$arrayAvisos	=	array();
					foreach($_POST as $chave => $post) {
						if (preg_match('/^checkAviso[0-9]+$/', $chave)) {
							array_push($arrayAvisos, str_replace('checkAviso', '', $chave));
						}
					}
					if ($localAcao == 'avisos') {
						$erro	=	false;
						foreach($arrayAvisos as $id) {
							if (!Aviso::apagar($id))
								$erro	=	true;
						}
						if (!$erro) adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos'));
					}
					if ($localAcao == 'modulo') {
						$erro	=	false;
						foreach($arrayAvisos AS $id) {
							if(!Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'avisos', $id, $cursoVisualizado->getNomeModulo(), $moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo()))
								$erro	=	true;
						}
						if (!$erro)
							adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						else
							adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
						redireciona(array('curso', $urlCurso,'modulo', $moduloVisualizado->getIdModulo(), 'avisos'));
					}
				}
				
				if (isset($_POST['btnSalvar'])) {
					$strTitulo		=	pegaPost('strTitulo');
					$strMensagem	=	configuraHTMLFormatado(pegaPost('strMensagem'));
					
					if ($idAviso = Aviso::inserir($cursoVisualizado->getIdCurso(), $idUsuario, $strTitulo, $strMensagem)) {
						if (is_numeric($idAviso)) {
							if ($localAcao == 'modulo'){
								$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idAviso, 'avisos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$objAssociacoes->criarAssociacao($moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo(), $idUsuario);
							}
							foreach ($_POST as $chave => $post) {
								if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
									//Uma Associacao foi feita
									
									//conseguiu pegar o id do Aviso que acabou de inserir
									$matches	=	array();
									
									if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
										$categoriaItemAssociacao	=	$matches[1];
										$idItemAssociacao			=	$matches[2];
										
										$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idAviso, 'avisos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
										$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
									}exit(0);
								}
							}
						}
						else {
							adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
						}
						
						$linkItem	=	preg_replace('/\/$/', '', getUrlCompleta()) . montaLink(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos', $idAviso));
						$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVO_AVISO'), textoEmail('EMAIL_TITULO_NOVO_AVISO'), textoEmail('EMAIL_NOVO_AVISO', array($cursoVisualizado->getNome(), $strTitulo, $this->getUsuario()->getNome(), $linkItem)));
						if ($localAcao == 'modulo')
							redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'avisos'));
						if ($localAcao == 'avisos')
							redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos'));
					}
					else {
						if ($localAcao == 'modulo')
							$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
						if ($localAcao == 'avisos')
							$listaAssociacoes	=	array();
						
						foreach ($_POST as $chave => $post) {
							$matches			=	array();
							if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
								array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
							}
						}
						array_push($listaAssociacoes, '--');
						
						$_SESSION['constructore']['inserirAviso']['strTitulo']			=	htmlentities((stripslashes(pegaPost('strTitulo'))), ENT_QUOTES, 'UTF-8');
						$_SESSION['constructore']['inserirAviso']['strMensagem']		=	stripslashes(pegaPost('strMensagem'));
						$_SESSION['constructore']['inserirAviso']['listaAssociacoes']	=	$listaAssociacoes;
						if ($localAcao == 'modulo')
							redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'avisos', 'inserir'));
						if ($localAcao == 'avisos')
							redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos', 'inserir'));
						
					}
				}
			}
			else {
				//Passando o Local da visualizacao para o template
				$this->getSmarty()->assign('localAcao', $localAcao);
				$this->getSmarty()->assign_by_ref('curso', $cursoVisualizado);
				if ($localAcao == 'modulo') {
					$this->getSmarty()->assign_by_ref('modulo', $moduloVisualizado);
					$this->getSmarty()->assign('arrayMenuModulo', $moduloVisualizado->configuraMenu($cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo()));
				}
				
				if ($objetivoPagina == 'inserir') {
					if(!$permissaoAvisos->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,'Professor',$idCurso),0)){
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'avisos'));
					}
					$this->getSmarty()->assign('inserir', true);
					$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('TEXTO_INSERIR_DADO', array(texto('DADOS_AVISO'))) . ' - ' . texto('AREA_AVISOS') . ' - ' . limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('TEXTO_INSERIR_DADO', array(texto('DADOS_AVISO'))) . ' - ' . texto('AREA_AVISOS') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
					$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_AVISOS') . ' > ' . texto('TEXTO_INSERIR_DADO', array(texto('DADOS_AVISO'))) : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_AVISOS') . ' > ' . texto('TEXTO_INSERIR_DADO', array(texto('DADOS_AVISO'))));
					$this->getSmarty()->assign('TITULO_INSERIR_AVISO', texto('TEXTO_INSERIR_DADO', array(texto('DADOS_AVISO'))));
					$this->getSmarty()->assign('arrayItensInseridos', $cursoVisualizado->getItensInseridos());
					
					if (!isset($_SESSION['constructore']['inserirAviso']['listaAssociacoes'])) {
						if ($localAcao == 'avisos')
							$_SESSION['constructore']['inserirAviso']['listaAssociacoes']	=	array('--');
						if ($localAcao == 'modulo')
							$_SESSION['constructore']['inserirAviso']['listaAssociacoes']	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo(), '--');
					}
				}
				else {
					if (is_numeric($objetivoPagina)) {
						//TODO visualizar um item
					}
					else {
												
						if($permissaoAvisos->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
							$this->getSmarty()->assign('possivelInserir', true);
						}
						if($permissaoAvisos->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,'Professor',$idCurso),0)){
							$this->getSmarty()->assign('possivelEditar', true);
						}
						
						
						if ($localAcao == 'avisos') {
							if (!is_array($resultado	=	$cursoVisualizado->getAvisos(null, null, 'dataHoraInsercao', 'desc')))
								redireciona(array('404'));
						}		
						if ($localAcao == 'modulo') {
							$associacoesModulo	=	new Associacoes($cursoVisualizado->getIdCurso(), $moduloVisualizado->getIdModulo(), 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
							$arrayAssociacoes	=	$associacoesModulo->getAssociacoes();
							$arrayIdAvisos	=	array();
							foreach($arrayAssociacoes AS $chave => $associacoes) {
								if ($chave == 'Avisos') {
									foreach ($associacoes as $associacao) {
										array_push($arrayIdAvisos, $associacao['idElemento']);
									}
								}
							}
							if (sizeof($arrayIdAvisos) > 0) {
								if (!is_array($resultado	=	Aviso::buscar($arrayIdAvisos, $cursoVisualizado->getIdCurso(), null, null, null, null, null, null, null, 'dataHoraInsercao', 'desc')))
									redireciona(array('404'));
							}
							else {
								$resultado	=	array('listaResultados' => array(), 'qtdResultadosTotal' => 0, 'qtdPaginas' => 0);
							}
						}
						
						if (is_array($resultado)) {
							$qtdAvisos = $resultado['qtdResultadosTotal'];
							$listaAvisos = $resultado['listaResultados'];
							
							foreach ($listaAvisos as $chave => $aviso) {
								$avisoTemp = $aviso;
								
								$idUsuarioUltimaModificacao = $avisoTemp['idUsuario'];
								if($resultadoUsuarioUltimaModificacao = Usuario::getUsuarioPorId($idUsuarioUltimaModificacao, null, null, null, null)) {
									$dadosUsuarioUltimaModificacao = $resultadoUsuarioUltimaModificacao['listaResultados'];
									$qtdAutor   = $resultadoUsuarioUltimaModificacao['qtdResultadosTotal'];
									
									if($qtdAutor > 0) {
										$avisoTemp['usuarioUltimaModificacao'] = nomeSobrenome($dadosUsuarioUltimaModificacao[0]['nome']); 	
										$avisoTemp['urlUsuarioUltimaModificacao'] = montalink(array('usuario', $dadosUsuarioUltimaModificacao[0]['idUsuario']));	
									}
									else {
										$avisoTemp['usuarioUltimaModificacao'] = texto('TEXTO_AUTOR_DESCONHECIDO');	
									}					
								}
								
								$avisoTemp['mensagem'] = stripslashes($avisoTemp['mensagem']);
								$avisoTemp['dataHoraUltimaModificacaoFormatada']	=	texto("TEXTO_ULTIMA_MODIFICACAO_POR", array(getDataHoraFormatada($avisoTemp['dataHoraInsercao']), $avisoTemp['urlUsuarioUltimaModificacao'], $avisoTemp['usuarioUltimaModificacao']));
								
								//Pegando e ajeitando associacoes
								$associacoesAviso	=	new Associacoes($cursoVisualizado->getIdCurso(), $aviso['idItem'], 'avisos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes	=	$associacoesAviso->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$dadosAssociacaoTemp	=	$dadosAssociacao;
										
										$dadosAssociacaoTemp['title']	=	texto('TITLE_ASSOCIACOES', array(strip_tags($dadosAssociacao['titulo'])));
										
										$arrayAssociacoes[$grupoAssociacoes][$chaveAssociacao]	=	$dadosAssociacaoTemp;
									}
								}
								
								$avisoTemp['arrayAssociacoes']	=	$arrayAssociacoes;
								
								$listaAvisos[$chave] = $avisoTemp;
							}
							if($permissaoAvisos->checkPermissao('Ver',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,'Professor',$idCurso),0)){
								$this->getSmarty()->assign('qtdAvisos', $qtdAvisos);
								$this->getSmarty()->assign('listaAvisos', $listaAvisos);
							}
							
							$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('AREA_AVISOS') . ' - ' . limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('AREA_AVISOS') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
							$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_AVISOS') : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_AVISOS'));
						}
						else {
							adicionaMensagem(texto('MENSAGEM_ERRO_INTERNO'), 'erro');
							redireciona($_SESSION['constructore']['URLOrigem']);
						}
					}
				}
				
				$this->exibir('avisos');
				if (isset($_SESSION['constructore']['inserirAviso'])) {
					unset($_SESSION['constructore']['inserirAviso']);
				}
			}
		}
		else {
			//Usuario nao pode acessar a pagina
			redireciona(array('404'));
		}
	}
	else {
		//Parametros invalidos para acessar a pagina
		redireciona(array('404'));
	}
?>